﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Galaktika.BI.Charting;

namespace Galaktika.BI.Charting.PivotChart
{
    public class PieChartProperties
    {
        public PieChartProperties()
        {
            m_InternalUpdating = true;

            //Устанавливаем настройки по-умолчанию
            SetDefaultSettings();

            m_InternalUpdating = false;
            //RaisePropertyChanged();
        }

        /// <summary>
        /// Флаг внутреннего обновления значений. 
        /// </summary>
        protected bool m_InternalUpdating;

        /// <summary>
        /// Событие - произошло изменение свойств
        /// </summary>
        public event EventHandler PropertyChanged;

        protected void RaisePropertyChanged()
        {
            //В случае внутреннего обновления значений событие не генерируем
            if (m_InternalUpdating)
                return;

            EventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, EventArgs.Empty);
        }

        #region Свойства для Pie - Диаграмм
       
        private String m_Path;
        /// <summary>
        /// Путь к данным 
        /// </summary>
        public String APath
        {
            get
            {
                return m_Path;
            }
            set
            {
                m_Path = value;
                RaisePropertyChanged();
            }
        }

        #region Позиция и размеры
        private double m_Location_X;
        /// <summary>
        /// Определяет координату X центра диаграммы
        /// </summary>
        public double Location_X
        {
            get
            {
                return m_Location_X;
            }
            set
            {
                m_Location_X = value;
                RaisePropertyChanged();
            }
        }

        private double m_Location_Y;
        /// <summary>
        /// Определяет координату Y центра диаграммы
        /// </summary>
        public double Location_Y
        {
            get
            {
                return m_Location_Y;
            }
            set
            {
                m_Location_Y = value;
                RaisePropertyChanged();
            }
        }

        private double m_OuterRadius;
        /// <summary>
        /// Радиус диаграммы
        /// </summary>
        public double OuterRadius
        {
            get
            {
                return m_OuterRadius;
            }
            set
            {
                m_OuterRadius = value;
                RaisePropertyChanged();
            }
        }

        private double m_InnerRadius;
        /// <summary>
        /// Внутренний pадиус диаграммы
        /// </summary>
        public double InnerRadius
        {
            get
            {
                return m_InnerRadius;
            }
            set
            {
                m_InnerRadius = value;
                RaisePropertyChanged();
            }
        }
        #endregion Позиция и размеры

        private int m_DataSeriesIndex;
        /// <summary>
        /// Индекс отображаемой серии из реальных данных
        /// </summary>
        public int DataSeriesIndex
        {
            get
            {
                return m_DataSeriesIndex;
            }
            set
            {
                m_DataSeriesIndex = value;
                RaisePropertyChanged();
            }
        }

        private LabelLayoutType m_LabelLayout;
        /// <summary>
        /// Тип отображения значений (по кругу, либо сноски)
        /// </summary>
        public LabelLayoutType LabelLayout
        {
            get
            {
                return m_LabelLayout;
            }
            set
            {
                m_LabelLayout = value;
                RaisePropertyChanged();
            }
        }

        private bool m_ShowLabelJoinLine;
        /// <summary>
        /// Флаг необходимости отображения линий-сносок
        /// </summary>
        public bool ShowLabelJoinLine
        {
            get
            {
                return m_ShowLabelJoinLine;
            }
            set
            {
                m_ShowLabelJoinLine = value;
                RaisePropertyChanged();
            }
        }

        private bool m_UseColoredLabels;
        /// <summary>
        /// Флаг необходимости использования цветных меток
        /// </summary>
        public bool UseColoredLabels
        {
            get
            {
                return m_UseColoredLabels;
            }
            set
            {
                m_UseColoredLabels = value;
                RaisePropertyChanged();
            }
        }
        #endregion Свойства для Pie - Диаграмм

        /// <summary>
        /// Устанавливает настройки по-умолчанию
        /// </summary>
        public void SetDefaultSettings()
        {
            Location_X = 0.5;
            Location_Y = 0.5;
            OuterRadius = 0.4;
            InnerRadius = 0;
            DataSeriesIndex = 0;
            /*AActionInvoker = null;
            AUseAction = true;*/
            APath = String.Empty;

            LabelLayout = LabelLayoutType.Side;
            ShowLabelJoinLine = true;
            UseColoredLabels = true;
        }
    }
}
